package com.lihepeng.leecode.integer;

import org.junit.Test;

/**
 * 给定一个非负整数 num。对于 0 ≤ i ≤ num 范围中的每个数字 i ，计算其二进制数中的 1 的数目并将它们作为数组返回。
 *
 * 示例 1:
 *
 * 输入: 2
 * 输出: [0,1,1]
 * 示例 2:
 *
 * 输入: 5
 * 输出: [0,1,1,2,1,2]
 *
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode-cn.com/problems/counting-bits
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 */
public class Solution338 {
    // 暴力解决方案
    public int[] countBits(int num) {
        int [] result = new int [num];
        for (int i=0;i<num;i++){
            result[i] = countBit(i);
        }
        return result;
    }

    private int countBit(int num){
        int sum=0;
        while (num>0){
            num &= (num - 1);
            sum++;
        }
        return sum;
    }
    @Test
    public void runTest(){
        System.out.println(this.countBit(6));
    }
}
